package com.hison.tandainbao.conf;


//import com.hison.tandainbao.handler.TokenInterceptor;
import com.hison.tandainbao.util.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

/**
 * @ClassName: MVCConfig
 * @Descripiton: 配置拦截器
 * @Author: 小郑
 * @Date： 2023/5/26 16:47
 * @Version：1.8
 **/
@Configuration
public class MVCConfig implements WebMvcConfigurer {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 添加拦截器
     *
     * @param registry 注册表
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        //拦截部分请求   后执行    登录拦截器
//        registry.addInterceptor(new LoginInterceptor())//添加拦截器
//                //设置不拦截的请求
//                .excludePathPatterns(
//                        "/user/code",
//                        "/user/login",
//                        "/shop/**", //放行以shop开头的所有请求
//                        "/shop-type/**", //放行以shop开头的所有请求
//                        "/voucher/**", //放行以shop开头的所有请求
//                        "/blog/hot",
//                        "/upload/**"
//                )
//                .order(1);//配置执行等级，数组越大级别越低

        //拦截所有请求    先执行    token刷新拦截器
//        registry.addInterceptor(new TokenInterceptor(stringRedisTemplate)) //添加拦截器
//                .addPathPatterns("/**")  //设置拦截所有请求
//                .order(0);
    }

    /**
     * 跨域支持   设置跨域
     *
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600 * 24);
    }

    /**
     * 自定义拦截器地址
     *
     * @return
     */
    @Bean
    public HandlerInterceptor authInterceptor() {
        return null;
    }

}